sudo apt-get install g++-multilib lib32stdc++6
fi
-url=https://static-rust-lang-org.s3.amazonaws.com/dist/`cat src/rustversion.txt`
+url=https://static.rust-lang.org/dist/`cat src/rustversion.txt`
-# Install both 64 and 32 bit libraries. Apparently travis barfs if you try to
-# just install the right ones? This should enable cross compilation in the
-# future anyway.
+# On unix hosts install both 32 and 64-bit libraries, but respect BITS to
+# determine what arch should be used by default. On windows we don't use 32/64
+# libraries, but instead we install msvc as an alternate architecture.
if [ -z "${windows}" ]; then
- rm -rf rustc *.tar.gz
- curl -O $url/rustc-nightly-i686-$target.tar.gz
- curl -O $url/rustc-nightly-x86_64-$target.tar.gz
- tar xfz rustc-nightly-i686-$target.tar.gz
- tar xfz rustc-nightly-x86_64-$target.tar.gz
-
if [ "${BITS}" = "32" ]; then
- src=x86_64
- dst=i686
+ cargo_extra=x86_64-$target
+ cargo_host=i686-$target
else
- src=i686
- dst=x86_64
+ cargo_extra=i686-$target
+ cargo_host=x86_64-$target
fi
- cp -r rustc-nightly-$src-$target/rustc/lib/rustlib/$src-$target \
- rustc-nightly-$dst-$target/rustc/lib/rustlib
- (cd rustc-nightly-$dst-$target && \
- find rustc/lib/rustlib/$src-$target/lib -type f | \
- sed 's/^rustc\//file:/' >> rustc/manifest.in)
-
- ./rustc-nightly-$dst-$target/install.sh --prefix=rustc
- rm -rf rustc-nightly-$src-$target
- rm -rf rustc-nightly-$dst-$target
- rm -f rustc-nightly-i686-$target.tar.gz
- rm -f rustc-nightly-x86_64-$target.tar.gz
+ libdir=lib
else
- rm -rf rustc *.exe *.tar.gz
- if [ "${BITS}" = "64" ]; then
- triple=x86_64-pc-windows-gnu
+ if [ "${BITS}" = "32" ]; then
+ cargo_host=i686-pc-windows-gnu
+ elif [ "${MSVC}" = "1" ]; then
+ cargo_host=x86_64-pc-windows-msvc
else
- triple=i686-pc-windows-gnu
+ cargo_host=x86_64-pc-windows-gnu
+ cargo_extra=x86_64-pc-windows-msvc
fi
- curl -O $url/rustc-nightly-$triple.tar.gz
- tar xfz rustc-nightly-$triple.tar.gz
- ./rustc-nightly-$triple/install.sh --prefix=rustc
- rm -rf rustc-nightly-$triple
- rm -f rustc-nightly-$triple.tar.gz
+ libdir=bin
fi
+rm -rf rustc *.tar.gz
+curl -O $url/rustc-nightly-$cargo_host.tar.gz
+tar xfz rustc-nightly-$cargo_host.tar.gz
+
+if [ ! -z "${cargo_extra}" ]; then
+ curl -O $url/rustc-nightly-$cargo_extra.tar.gz
+ tar xfz rustc-nightly-$cargo_extra.tar.gz
+
+ cp -r rustc-nightly-$cargo_extra/rustc/$libdir/rustlib/$cargo_extra \
+ rustc-nightly-$cargo_host/rustc/$libdir/rustlib
+ cp -r rustc-nightly-$cargo_extra/rustc/$libdir/rustlib/$cargo_extra/bin \
+ rustc-nightly-$cargo_host/rustc/$libdir/rustlib/$cargo_host
+ (cd rustc-nightly-$cargo_host && \
+ find rustc/$libdir/rustlib/$cargo_extra -type f | \
+ sed 's/^rustc\//file:/' >> rustc/manifest.in)
+ (cd rustc-nightly-$cargo_host && \
+ find rustc/$libdir/rustlib/$cargo_host/bin -type f | \
+ sed 's/^rustc\//file:/' >> rustc/manifest.in)
+ rm -rf rustc-nightly-$cargo_extra
+ rm -f rustc-nightly-$cargo_extra.tar.gz
+fi
+
+./rustc-nightly-$cargo_host/install.sh --prefix=rustc
+rm -rf rustc-nightly-$cargo_host
+rm -f rustc-nightly-$cargo_host.tar.gz
+
set +x
"hamcrest 0.1.0 (git+https://github.com/carllerche/hamcrest-rust.git)",
"kernel32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libgit2-sys 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libgit2-sys 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num_cpus 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)",
"registry 0.1.0",
"rustc-serialize 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"tempdir 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"term 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
"threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)",
"toml 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
"url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "curl-sys 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
[[package]]
name = "curl-sys"
-version = "0.1.22"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "gcc"
-version = "0.3.5"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
dependencies = [
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libgit2-sys 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libgit2-sys 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
]
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
[[package]]
name = "libgit2-sys"
-version = "0.2.14"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libssh2-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libssh2-sys 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libssh2-sys"
-version = "0.1.24"
+version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libz-sys"
-version = "0.1.3"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "gcc 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num_cpus"
-version = "0.1.0"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "gcc 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "gcc 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"libressl-pnacl-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
[[package]]
name = "time"
-version = "0.1.25"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "gcc 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "winapi"
-version = "0.1.17"
+version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
err "cargo does not currently support an out-of-tree build dir"
fi
+for i in $CFG_TARGET
+do
+ case $i in
+ x86_64-*-msvc)
+ # Use the REG program to figure out where VS is installed
+ # We need to figure out where cl.exe and link.exe are, so we do some
+ # munging and some probing here. We also look for the default
+ # INCLUDE and LIB variables for MSVC so we can set those in the
+ # build system as well.
+ install=$(reg QUERY \
+ 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0' \
+ -v InstallDir)
+ need_ok "couldn't find visual studio install root"
+ CFG_MSVC_ROOT=$(echo "$install" | grep InstallDir | sed 's/.*REG_SZ[ ]*//')
+ CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT")
+ CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT")
+ CFG_MSVC_BIN="${CFG_MSVC_ROOT}/VC/bin/amd64"
+ CFG_MSVC_CL="${CFG_MSVC_BIN}/cl.exe"
+ CFG_MSVC_LIB="${CFG_MSVC_BIN}/lib.exe"
+ CFG_MSVC_LINK="${CFG_MSVC_BIN}/link.exe"
+
+ vcvarsall="${CFG_MSVC_ROOT}/VC/vcvarsall.bat"
+ CFG_MSVC_INCLUDE_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %INCLUDE%")
+ need_ok "failed to learn about MSVC's INCLUDE"
+ CFG_MSVC_LIB_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %LIB%")
+ need_ok "failed to learn about MSVC's LIB"
+ CFG_MSVC_WINDOWS_SDK_DIR=$(cmd /c \
+ "\"$vcvarsall\" amd64 && cmd /c echo %WindowsSdkDir%")
+ need_ok "failed to learn about MSVC's WindowsSdkDir"
+ export CFG_MSVC_WINDOWS_SDK_DIR="${CFG_MSVC_WINDOWS_SDK_DIR}bin/x64"
+
+ putvar CFG_MSVC_ROOT
+ putvar CFG_MSVC_BIN
+ putvar CFG_MSVC_CL
+ putvar CFG_MSVC_LIB
+ putvar CFG_MSVC_LINK
+ putvar CFG_MSVC_INCLUDE_PATH
+ putvar CFG_MSVC_LIB_PATH
+ putvar CFG_MSVC_WINDOWS_SDK_DIR
+ ;;
+
+ *)
+ ;;
+ esac
+done
+
if [ ! -z "$CFG_ENABLE_NIGHTLY" ]; then
if [ ! -f .cargo/config ]; then
mkdir -p .cargo